МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний Університет „Львівська Політехніка”
Звіт до лабораторної роботи №5
на тему:
„Наближене обчислення інтегралів”
Варіант 37, 63.
Завдання:
Виконати обчислення на ЕОМ інтеграла за допомогою пакету ПП Maple.
Виконати обчислення на ЕОМ інтеграла за формулою трапецій з точністю до 10-6.
Виконати обчислення на ЕОМ інтеграла за формулою Сімпсона з точністю до 10-6.
37: I = .
63: I = .
Розв’язання:
1. Реалізація на Maple
restart;
> evalf(int((exp(x)+cos(x))/((1+x^2)^(1/2)+(1+x^3)^(1/2)),x=0..5));
13.7155
> evalf(int(ln(1+x^1/2)/(1+x^2)^(3/2),x=0..1));
0.326554
Формула трапецій:
де h = - крок обчислень.
Формула Сімпсона ( параболічна формула):
якщо n – парне число, то
.Код програми на мові С++:
#include <fstream.h>
#include <math.h>
int i, j,n;
double e,M2,M4,h,In,I2n,I;
double function1(double x);
double function2(double x);
double function1(double x)
{
return ((exp(x)+cos(x))/(sqrt(1+pow(x,2))+sqrt(1+pow(x,3))));
}
double function2(double x)
{
return (log(1+sqrt(x))/pow((1+pow(x,2)),(3/2)));
}
void main ()
{
/////////////////////////////////////////////////////////////////
cout<<"Vvedit tochnist\n";
cin>>e;
h=1;
n=ceil(5/h);
h=(5.0/n);
In=(function1(0.0)+function1(5.0))/2.0;
for(i=1;i<=n-1;i++)
In+=function1(i*h);
In*=h;
I2n=In;
do
{
In=I2n;
h/=2;
n=ceil(5/h);
h=(5.0/n);
I2n=(function1(0.0)+function1(5.0))/2.0;
for(i=1;i<=n-1;i++)
I2n+=function1(i*h);
I2n*=h;
}
while (fabs(In-I2n)>e);
I=I2n;
cout<<'\n'<<"Integral 1 za metodom trapecij="<<I<<'\n';
cout<<h<<'\n';
//cout<<"Ocinka pokhybky: <= "<<pow(h,2)/12*5*M2<<'\n'<<'\n';
/////////////////////////////////////////////////////////////////
h=1;
n=ceil(1/h);
h=(1.0/n);
In=(function2(0.0)+function2(1.0))/2.0;
for(i=1;i<=n-1;i++)
In+=function2(i*h);
In*=h;
I2n=In;
do
{
In=I2n;
h/=2;
n=ceil(1/h);
h=(1.0/n);
I2n=(function1(0.0)+function1(1.0))/2.0;
for(i=1;i<=n-1;i++)
I2n+=function1(i*h);
I2n*=h;
}
while (fabs(In-I2n)>e);
I=I2n;
cout<<"Integral 2 za metodom trapecij="<<I<<'\n';
cout<<h<<'\n';
//cout<<"Ocinka pokhybky: <= "<<pow(h,2)/12*1*M2<<'\n';
/////////////////////////////////////////////////////////////////
h=1;
n=ceil(5/h);
if(fmod(n,2)!=0)
n+=1;
//cout<<n;
h=(5.0/n);
In=(function1(0.0)+function1(5.0));
for(i=1;i<=n/2;i++)
In+=4.0*function1((2*i-1)*h);
for(i=1;i<=n/2;i++)
In+=2.0*function1(2*i*h);
In*=h/3;
I2n=In;
do
{
In=I2n;
h/=2;
n*=2;
I2n=(function1(0.0)+function1(5.0));
for(i=1;i<=n/2;i++)
I2n+=4.0*function1((2*i-1)*h);
for(i=1;i<=n/2;i++)
I2n+=2.0*function1(2*i*h);
I2n*=h/3;
}
while (fabs(In-I2n)>e);
I=I2n;
cout<<'\n'<<"Integral 1 za metodom Simpsona="<<I<<'\n';
cout<<h<<'\n';
//cout<<"Ocinka pokhybky: <= "<<pow(h,4)/180*5*M4<<'\n'<<'\n';
/////////////////////////////////////////////////////////////////
h=1;
n=ceil(1/h);
if(fmod(n,2)!=0)
n+=1;
h=(1.0/n);
In=(function2(0.0)+function2(1.0));
for(i=1;i<=n/2;i++)
In+=4.0*function2((2*i-1)*h);
for(i=1;i<=n/2;i++)
In+=2.0*function2(2*i*h);
In*=h/3;
I2n=In;
do
{
In=I2n;
h/=2;
n*=2;
I2n=(function1(0.0)+function1(1.0));
for(i=1;i<=n/2;i++)
I2n+=4.0*function1((2*i-1)*h);
for(i=1;i<=n/2;i++)
I2n+=2.0*function1(2*i*h);
I2n*=h/3;
}
while (fabs(In-I2n)>e);
I=I2n;
cout<<'\n'<<"Integral 2 za metodom Simpsona="<<I<<'\n';
cout<<h<<'\n';
//cout<<"Ocinka pokhybky: <= "<<pow(h,4)/180*1*M4<<'\n'<<'\n';
}
Контрольний приклад:
Висновок: під час лабораторної роботи я ознайомився зі способом наближеного обчислення інтегралів методом трапецій та Сімпсона. Для реалізації цього методу на ПК використав також пакет прикладних програм Maple.
СПИСОК ЛІТЕРАТУРИ
Бахвалов Н.С., Жидков Н.П., Кобельков Г.М.. Численные методы.-М.:Наука, 1987.
Гаврилюк І.П., Макаров В.Л. Методи обчислень. –К.:Вища школа, 1995, ч.1, ч.2.
Данилович В., Кутнів М. Чисельні методи.-Львів:Кальварія, 1998.
Калиткин Н.Н. Численные методы.-М.:Наука, 1978.
Самарский А.А., Гулин А.В. Числен...